package com.cssw.fyzb.core.dao.video;

import com.cssw.fyzb.core.model.dodb.CmfUserMusic;
import com.cssw.fyzb.core.model.dodb.CmfUserVideo;
import com.ydn.dbframe.plugin.activerecord.Page;
import com.ydn.dbframe.plugin.activerecord.Record;

import java.util.List;
import java.util.Map;

/**
 * @author Feng Chen
 */
public interface UserVideoDao {

    /**
     * 根据主键查询
     *
     * @param vedioId
     * @return
     */
    CmfUserVideo findById(Long vedioId);

    /**
     * 查看用户的视频信息
     *
     * @param userId
     * @param audit
     * @param pageNumber
     * @param pageSize
     * @return
     */
    Page<CmfUserVideo> pageByUserId(Long userId, String audit, int pageNumber, int pageSize);

    /**
     * 根据审核状态查询用户视频信息
     *
     * @param audit
     * @return
     */
    Page<CmfUserVideo> pageByAudit(String audit, int pageNumber, int pageSize);

    Page<CmfUserVideo> pageByAuditStatus(int status, int pageNumber, int pageSize);

    Page<CmfUserVideo> listByAudit(int pageNumber, int pageSize);

    Page<CmfUserVideo> pageByHot(String audit, int pageNumber, int pageSize);

    /**
     * 添加短视频
     *
     * @param userId 用户编号
     * @param title  主题
     * @param href   地址
     * @param thumb  封面
     * @param vodId  视频ID 用于审核
     * @param lat    精度
     * @param lng    维度
     * @param city   城市
     * @return
     */
    Long add(Long userId, String title, String href, String thumb, String vodId, String lat, String lng, String city);

    /**
     * 审核视频
     *
     * @param vodId  视频ID
     * @param status 视频状态
     */
    void audit(Long id,String vodId, Integer status);

    /**
     * 删除视频
     *
     * @param vedioId
     */
    void delete(Long vedioId);

    /**
     * 搜索直播列表
     *
     * @return
     */
    Page<CmfUserVideo> searchVideo(Map param, Integer pageNumber, Integer pageSize);

    /**
     * 根据视频 背景音乐ID 查询音乐
     * @Param
     * @return
     **/
    CmfUserMusic getCmfUserMusic(int musicId);

    CmfUserVideo getCmfUserVideo(Long id);

    Page<Record> pageByCountLikes(int pageNum, int pageSize);

    Integer countLikes(Long userId);
}
